home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
BBS Toolkit
/
BBS Toolkit.iso
/
tag_bbs
/
tagr26e.zip
/
TAGR26E.H
< prev
next >
Wrap
C/C++ Source or Header
|
1993-04-27
|
54KB
|
1,156 lines
/*****************************************************************************/
/* T.A.G. Bulletin Board System */
/* Copyright (c) 1986-1993 by The T.A.G. Team */
/* All rights reserved. */
/* */
/* ----------------------------------- */
/* T.A.G. Version 2.6e Data Structures */
/* ----------------------------------- */
/* Converted from Turbo Pascal to C by Martin Pollard */
/* */
/* All we ask if you use these record structures is to give credit where */
/* credit is due. */
/* */
/* Additional structure information may be given out on an individual */
/* basis depending on the situation. */
/* */
/* RELEASE HISTORY: */
/* */
/* 01/24/93 - Initial release. */
/* 02/17/93 - Corrected errors in definitions for SystatRec, ModemRec, and */
/* MboardType. */
/* 04/27/93 - Re-Released without change for version 2.6e (Paul Williams) */
/* */
/*---------------------------------------------------------------------------*/
/* */
/* NOTES TO PROGRAMMERS: */
/* */
/* Turbo Pascal strings are formatted differently than C strings: */
/* */
/* Turbo Pascal: length byte + string data */
/* C: string data + '\0' (zero) */
/* */
/* You will have to write conversion routines to convert strings back and */
/* forth between TP and C formats if you wish to use strings. */
/* */
/* Also, C has no direct equivalent to Turbo Pascal's "real" type for real */
/* numbers (C's "float" and "double" do not use the same format). If you */
/* wish to use real numbers, you will have to write conversion routines. */
/* */
/* NOTE THAT THERE IS NO ATTEMPT HERE TO TEACH YOU HOW TO ACCESS T.A.G. DATA */
/* FILES USING THE C LANGUAGE. IT IS ASSUMED THAT YOU ALREADY KNOW HOW TO */
/* PROGRAM IN C, AND ARE FAMILIAR WITH THE INS AND OUTS OF ACCESSING FIXED- */
/* LENGTH RECORD DATA FILES (SUCH AS THE ONES T.A.G. USES). */
/* */
/*****************************************************************************/
#ifndef __TAGREC_H /* Prevents header from being included */
#define __TAGREC_H /* twice in the same program or module */
typedef unsigned char Boolean; /* C equivalent for TP "boolean" type */
/* (0 is FALSE, non-0 is TRUE) */
typedef unsigned char Byte; /* C equivalent for TP "byte" type */
typedef unsigned char Char; /* C equivalent for TP "char" type */
/* (ensures values in 0..255 range) */
typedef int Integer; /* C equivalent for TP "integer" type */
typedef long Longint; /* C equivalent for TP "longint" type */
typedef unsigned int Word; /* C equivalent for TP "word" type */
typedef unsigned char Real[6]; /* C has no equivalent for TP "real" type! */
typedef unsigned int Bit; /* shorthand operator for bit fields */
/* (ensures returning positive values) */
/*---------------------------------------------------------------------------*/
/***************************************************************************/
/* The following values are used by the system for user fields */
/* "ask" values will be asked of the user the next time they logon if the */
/* question is part of the new user logon */
/* "none" values are normally for optional fields where the user simply */
/* pressed <enter> */
/***************************************************************************/
#define USER_STRING_ASK " " /* Ask for user string fields */
#define USER_STRING_NONE "" /* None for user string fields */
#define USER_DATE_ASK 0xFE21 /* Ask for user date fields - 1/1/2027 */
#define USER_DATE_NONE 0x0021 /* None for user date fields - 1/1/0 */
#define USER_WORD_ASK 65535U /* Ask for user word fields */
#define USER_WORD_NONE 65534U /* None for user word fields */
#define USER_CHAR_ASK '~' /* Ask for user character fields */
#define USER_CHAR_NONE ' ' /* None for user character fields */
#define USER_PHONE_ASK " " /* Ask for user phone fields */
#define USER_PHONE_NONE "" /* None for user phone fields */
/*---------------------------------------------------------------------------*/
#define DYN_DEFAULT 0 /* Default */
#define DYN_YES 1 /* Yes */
#define DYN_NO 2 /* No */
typedef Byte DefaultYesNoType; /* Default/yes/no type */
typedef Char ArFlagType; /* AR flags (@..Z) */
typedef Byte ArFlagset[4]; /* Set of AR flags */
/* Byte 0 = bits 0..7 = Flags @..G */
/* Byte 1 = bits 0..7 = Flags H..O */
/* Byte 2 = bits 0..7 = Flags P..W */
/* Byte 3 = bits 0..2 = Flags X..Z */
typedef struct /* User special flags */
{
Bit AutoPrivDel : 1; /* A = Force user to delete private mail */
Bit NoPostCall : 1; /* B = No post call ratio */
Bit ForceULScan : 1; /* C = Force this user to automatically scan */
/* when uploading */
Bit Ranon : 1; /* D = Restrict from posting anonymous */
Bit RbbsList : 1; /* E = Restrict from adding to other BBS list */
Bit Rchat : 1; /* F = Restrict from chatting */
Bit NoDLlimit : 1; /* G = No download ratio limit */
Bit RpubMsg : 1; /* H = Restrict from posting public mail */
Bit RprivMsg : 1; /* I = Restrict from sending private mail */
Bit Rvoting : 1; /* J = Restrict from voting */
Bit OneCall : 1; /* K = One call per day allowed */
Bit PubNotVal : 1; /* L = Public posts are not validated */
Bit ProtDel : 1; /* M = Protect from deletion */
Bit NoFilePts : 1; /* N = No file point checks */
Bit RfileVal : 1; /* O = Credit from upload on validation */
Bit Pause : 1; /* P = [PAUSE] active */
Bit Ansi : 1; /* Q = ANSI graphics active */
Bit Color : 1; /* R = Color active if ANSI present */
Bit OneKey : 1; /* S = Onekey input used instead of line input */
Bit Alert : 1; /* T = Alert active from user's next call */
Bit FlagRecUnused : 1; /* U = Reserved */
Bit MboxClosed : 1; /* V = Mail box closed to all but SysOp's */
Bit Tabs : 1; /* W = VT100 tabs are used to optimize display */
Bit ClsChar : 1; /* X = Clear screen characters used */
}
FlagSet; /* 3 bytes used for 24 flags in set */
typedef struct
{
Bit IsCdRom : 1;
Bit uuUlRecFlag1 : 1;
Bit uuUlRecFlag2 : 1;
Bit uuUlRecFlag3 : 1;
Bit uuUlRecFlag4 : 1;
Bit uuUlRecFlag5 : 1;
Bit uuUlRecFlag6 : 1;
Bit uuUlRecFlag7 : 1;
}
UlRecFlagSet;
typedef struct /* User configuration flags */
{
Bit UseCustomMenus : 1; /* A = Allow custom ANSI menus */
Bit ClsMsgRead : 1; /* B = Clear screen between reading messages */
Bit DoNotDisturbUser : 1; /* C = Do not disturb user (multi-user only) */
Bit uuCFFlag21 : 1; /* D = Reserved */
Bit uuCFFlag20 : 1; /* E = Reserved */
Bit uuCFFlag19 : 1; /* F = Reserved */
Bit uuCFFlag18 : 1; /* G = Reserved */
Bit uuCFFlag17 : 1; /* H = Reserved */
Bit uuCFFlag16 : 1; /* I = Reserved */
Bit uuCFFlag15 : 1; /* J = Reserved */
Bit uuCFFlag14 : 1; /* K = Reserved */
Bit uuCFFlag13 : 1; /* L = Reserved */
Bit uuCFFlag12 : 1; /* M = Reserved */
Bit uuCFFlag11 : 1; /* N = Reserved */
Bit uuCFFlag10 : 1; /* O = Reserved */
Bit uuCFFlag9 : 1; /* P = Reserved */
Bit uuCFFlag8 : 1; /* Q = Reserved */
Bit uuCFFlag7 : 1; /* R = Reserved */
Bit uuCFFlag6 : 1; /* S = Reserved */
Bit uuCFFlag5 : 1; /* T = Reserved */
Bit uuCFFlag4 : 1; /* U = Reserved */
Bit uuCFFlag3 : 1; /* V = Reserved */
Bit uuCFFlag2 : 1; /* W = Reserved */
Bit uuCFFlag1 : 1; /* X = Reserved */
}
ConfigFlagSet; /* 3 bytes used for 24 flags in set */
/************************************************/
/* ColorRec = Array of B&W / Color Color Bytes */
/************************************************/
typedef Byte ColorRec[2][10]; /* ColorRec[0][x] = B&W */
/* ColorRec[1][x] = Color */
/* x = 0..9 = Actual Color Codes */
/*---------------------------------------------------------------------------*/
typedef struct /* User name index - NAMES.LST */
{
Char Name[37]; /* User name */
Integer Number; /* User number */
}
SmalRec;
/*---------------------------------------------------------------------------*/
typedef struct /* User log - USER.LST */
{
Char Uname[37]; /* User name */
Char Rname[37]; /* Real name */
Char ADDR[31]; /* Address */
Char ComType[31]; /* Computer type */
Char CityState[31]; /* City/State */
Char Snote[31]; /* SysOp note */
Word LastDate; /* Last date on - Semi-MS-DOS 1900 based fmt */
Word LastTime; /* Last time on - MS-DOS format */
Char PW[17]; /* Password */
Char Phone[13]; /* Phone number 1 */
Char Zcode[11]; /* Zip code */
Char Phone2[13]; /* Phone number 2 */
Char ExtraStr1[41]; /* Extra string 1 */
Char ExtraStr2[41]; /* Extra string 2 */
Char ExtraStr3[41]; /* Extra string 3 */
Word ExtraDate1; /* Extra date 1 - Semi-MS-DOS 1900 based fmt */
Word ExtraDate2; /* Extra date 2 - Semi-MS-DOS 1900 based fmt */
Word ExtraWord1; /* Extra word 1 */
Word ExtraWord2; /* Extra word 2 */
Word ExtraWord3; /* Extra word 3 */
Word ExtraWord4; /* Extra word 4 */
Char ExtraChar1; /* Extra character 1 */
Char ExtraChar2; /* Extra character 2 */
Char ExtraChar3; /* Extra character 3 */
Char ExtraChar4; /* Extra character 4 */
Char ExtraPhone[13]; /* Extra phone */
Byte uureserved[3]; /* Reserved */
/*************************************************************/
/* Vote = An array of Voting Answers, One for each question */
/*************************************************************/
Byte Vote[20]; /* Voting */
/**********************************************************************/
/* Call spread for last 15 calls - Number of days between each call: */
/* 0 = Called the same day */
/* 1..253 = X number of days between */
/* 254 = 254 or more days between */
/* 255 = Element not used yet */
/**********************************************************************/
Byte CallSpr[15]; /* Call spread */
Real Ttimeon; /* Total time on system in minutes */
Real UlK; /* UL K-Bytes */
Real Dlk; /* DL K-Bytes */
/**********************************************************/
/* UserNum = The User number */
/* 0 -----------------------------> Deleted */
/* Same as Record Number ----------> Normal */
/* Different from Record Number ---> Locked Out */
/**********************************************************/
Integer UserNum; /* User number */
Word PrivPost; /* Private posts */
Word PubPost; /* Public posts */
Word FeedBack; /* Feedback sent to SysOp */
Word NumCalls; /* Total number of calls to system */
Word NumUL; /* Number of uploads */
Word NumDL; /* Number of downloads */
/*********************************************************/
/* Fmail = Status of Mail Forwarding */
/* 0 --------> Forwarding inactive */
/* Other ----> User Number to forward mail to */
/*********************************************************/
Integer Fmail; /* Forward mail to which user number */
Word Hbaud; /* Highest baud rate user supports */
Word TimeToday; /* Minutes on system date of last call */
Word Credit; /* Credit for mail in cents */
Word Debit; /* Debit for mail in cents */
Word Points; /* File points */
Word TimeBank; /* Minutes in time bank */
Word Bday; /* Birthdate of user - Semi-MS-DOS format */
Word LastChange; /* Reserved */
Byte StrtMenu; /* Reserved */
Byte SL; /* Security level - SL */
Byte DSL; /* Download security level - DSL */
Byte Hlvl; /* Help level */
Byte Colms; /* Number of screen columns */
Byte Lines; /* Number of screen lines */
Byte Callstoday; /* Number of calls to system today */
Byte Illegal; /* Illegal logon attempts */
Char Gender; /* User gender M/F/' '=not specified */
Byte uulMsgBase; /* Last message base */
Byte uuLdlBase; /* Last file section */
Byte Cls; /* Reserved */
DefaultYesNoType FullEdit; /* Full screen editor status */
ArFlagset Ar; /* AR flag set */
FlagSet Flags; /* Special flag set */
Word FirstOn; /* Date first on - Semi-MS-DOS format */
Word Expires; /* Date expires - Semi-MS-DOS format */
Byte UserRecUnused[29]; /* Reserved */
ColorRec Colors; /* User colors */
Byte TBdeposit; /* Time deposited in bank last call */
Byte TBwithdraw; /* Time withdraw from bank last call */
Integer AdjTime; /* Adjusted time date of last call */
ConfigFlagSet ConfigFlags; /* Configuration Flags */
Word lMbase; /* Last message section */
Word lFbase; /* Last file section */
Byte Unused[5]; /* Reserved */
}
UserRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Short messages - SHORTMSG.DAT */
{
Char Msg[161]; /* Message text */
Integer Destin; /* User number of who message is to */
}
SmallMessageRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Voting questions - VOTING.DAT */
{
Char Question[75]; /* Question */
Word NumA; /* Number of answers in below array */
struct /* Array of answer data */
{
Char Ans[41]; /* Answer */
Word NumRes; /* Number of users who chose this response */
}
Answ[10];
}
Vdatar;
/*---------------------------------------------------------------------------*/
typedef struct /* File section - FBOARDS.DAT */
{
Char Name[40]; /* Section name 26 Real Len, Rest Colors */
Char Filename[9]; /* Listing filename (does not include ".DIR") */
/* If UL and DL paths are different, */
/* filename for upload section is "FILES" */
/* If first character is "@" then *.DIR file */
/* is found in main data files directory */
Char DlPathname[31]; /* Download pathname */
Char UlPathName[31]; /* Upload pathname */
Char Password[16]; /* Password required */
UlRecFlagSet Flags;
Byte DSL; /* DSL required */
Byte SeeNames; /* DSL required to see uploader names */
ArFlagType ArLvl; /* AR flag required */
Byte NoRatioGroupNum; /* Bit 0 = Ratio disabled */
/* Bits 1-7 = Group number */
}
UlRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Set of file flags */
{
Bit NotValidated : 1; /* File is not validated */
Bit OwnerRestricted : 1; /* Uploader did not receive credit on upload */
Bit uuF6 : 1; /* Reserved */
Bit uuF5 : 1; /* Reserved */
Bit uuF4 : 1; /* Reserved */
Bit uuF3 : 1; /* Reserved */
Bit uuF2 : 1; /* Reserved */
Bit uuF1 : 1; /* Reserved */
}
FlagRecSet; /* 1 byte used for 8 flags in set */
typedef struct /* File listing - *.DIR */
{
Char Filename[13]; /* File name */
Char Description[79]; /* Description */
Word Nacc; /* Number of times file downloaded */
Byte Unused; /* Reserved */
Word Blocks; /* Number of 128 byte blocks in file */
Char Owner[37]; /* Uploader of file */
Char Date[9]; /* Date file uploaded */
Word DateN; /* Date uploaded in days since Jan 1, 1985 */
FlagRecSet Flag; /* File status */
Byte Points; /* File points */
}
UlfRec;
/*---------------------------------------------------------------------------*/
#define NUMSHELLFILES 13 /* # currently defined internal shell files */
typedef struct
{
DefaultYesNoType useswap; /* Swap shell setting */
struct /* Shell file flags */
{
Bit shellshowcall : 1;
Bit shelllogcall : 1;
}
flags;
}
shellfilerec;
typedef shellfilerec /* Array of shell files */
shellfilelist[NUMSHELLFILES];
#define NUMNEWUSERQUESTS 29 /* Number of current new user questions */
typedef struct
{
Byte itemnum; /* Item number to ask or 0=inactive */
Boolean required; /* Required/optional */
}
newuserquestrec;
typedef newuserquestrec /* Array of new */
newuserquestlist[NUMNEWUSERQUESTS]; /* user questions */
typedef Word Range[256]; /* Range of values for all security levels */
/*****************************************************/
/* Provide for full 4D awareness (And point support) */
/*****************************************************/
typedef struct /* Fidonet Style Address (23 Bytes) */
{
Word Zone; /* Zone, 1 = N. America */
Word Net; /* Net, 120 = SE Michigan */
Word Node; /* Node, 116 = CRIMP BBS */
Word Point; /* Point, 99% of the time = 0 */
Char Domain[16]; /* As in FIDONET */
}
AddressType;
/*---------------------------------------------------------------------------*/
typedef struct /* System status - STATUS.DAT */
{
Char AltPath[41]; /* Alternate file path */
Char DictPath[41]; /* Dictionary path */
Byte DefReadMsgMenu; /* Wait screen read message menu */
Boolean dynamicmsg; /* Dynamic message numbering active */
Boolean dynamicfile; /* Dynamic file numbering active */
Boolean waitscreendisable; /* Wait screen activity disable */
Boolean requiredvoting; /* Require voting when user logs on */
Byte automsglines; /* Auto message number of lines */
Byte uunewuserexpdays; /* Reserved */
Byte addwordsl; /* Add word to dictionary SL */
Char expvalkey; /* User expired validation key (#13=None) */
Byte expwarning; /* # of days to give warning before expires */
Byte modifymailflags; /* Sl when allowed to modify mail flags */
Byte netmailfilerequest; /* SL for NetMail file requests */
Byte netmailfileattach; /* SL for NetMail file attach */
Boolean ModemDebug; /* Modem debug information written to log */
Boolean UseXMS; /* Use XMS memory for swap shell */
Boolean ShowFilesOpen; /* Show Files Open on Top Screen */
Boolean LocalSysopWindow; /* SysOp window when on locally */
Boolean AllowSuperFast; /* Allow SHIFT password override */
Boolean WaitSend; /* FOSSIL buffer inactive */
Boolean OverlayEMS; /* Attempt EMS of overlays */
Boolean EMSOverXMS; /* Use EMS over XMS memory for swap */
Boolean DirectScreen; /* Direct screen writes */
Boolean UseEMS; /* Use EMS memory for swap shell */
Boolean useswap; /* Use swap shell */
Boolean UseFossil; /* Use FOSSIL driver */
Boolean SnowCheck; /* Snow checking active */
Byte BrowseDSL; /* DSL to have U/D commands on */
/* File Browse Menu */
Byte uusystatrec1[9]; /* Reserved */
Char TempDlPath[41]; /* Temp File Download Path */
Word MinKpost; /* Minimum K-Bytes to post */
Word MinKul; /* Minimum K-Bytes to upload */
Boolean AutoChatBufOpen; /* Auto chat buffer open */
Char nettype[21]; /* Multi-user network type */
Byte uusystatrec2[15]; /* Reserved */
Byte LogonPassword; /* SL when SysOp PW #1 needed to logon */
Byte ReadTextMsg; /* SL when allowed to use /READ command */
Boolean AlertChatOnly; /* Alert active only when chat on */
Boolean genericinfo; /* Generic mode active */
Boolean LogonPhone; /* Logon requires phone number */
Char DefMsgGroup[21]; /* Default msg section group mask */
Char DefFileGroup[21]; /* Default file section group mask */
Byte uusystatrec3[13]; /* Reserved */
Char LastCaller[43]; /* Name and number of last caller */
Char MenuFastKeys[21]; /* Menu fast keys (e.g. "/") */
Char BoardPW[17]; /* New user password (Null=None) */
Char BoardPhone[13]; /* Board phone number */
Byte SysopColor; /* Chat SysOp color */
Byte UserColor; /* Chat user color */
ArFlagType PostCallFlag; /* Post call ratio AR flag */
Byte NoPostCallChk; /* SL when post call ratio ignored */
Byte ReinitTime; /* Minutes to re-init modem when no calls */
Byte StartMenu; /* Starting menu for users */
Boolean UseAutoMsg; /* Display auto-message during logon */
Boolean LogonOffHook; /* Take phone off-hook on local logon */
Byte NoPointChk; /* DSL when file points ignored */
Char LastDate[9]; /* Date last user logged on */
AddressType Address; /* Zone/Net/Node/Point/Domain */
Boolean UserOn11x; /* Use USERON.BBS version 1.1x */
shellfilelist shellfile; /* Shell file information */
Byte uushellfile[10]; /* Reserved for shell files */
newuserquestlist newuserquest; /* New user question information */
Byte uunewuserquest[270]; /* Reserved */
Byte ActiveModemRecNum; /* Active Modem Record Number */
Char MultiUserPath[41]; /* Multi-user path */
Byte defusereditlist; /* Default user editor list mode */
/* 0=short, 1=normal, 2=extended, 3=info */
Byte uusystatrec5[10]; /* Reserved */
Char GfilesPath[41]; /* Main data files path */
Boolean StoreBadLogon; /* Store bad logon info in SysOp log */
Byte MaxBdNum; /* Maximum number of batch DL files */
Byte MaxBuNum; /* Maximum number of batch UL files */
Char BoardName[49]; /* Board name */
Byte SysopMenuSL; /* SL required for SysOp Control-Q menu */
ArFlagType SysopMenuAR; /* AR flag required from Control-Q menu */
Char SysopName[37]; /* SysOp name */
Char SwapPath[41]; /* Swap shell path */
Char ChatPW[17]; /* Chat password */
Char LastTAGVersion[21]; /* Last version of TAG to run */
Char nodelistpath[41]; /* Nodelist directory */
Byte uusystatrec6[2308]; /* Reserved */
Char SysopPW[3][17]; /* Array of SysOp passwords */
Byte uusystatrec7[120]; /* Reserved */
Real CallerNum; /* Total number of calls to system */
Real UlKtoday; /* K-Bytes uploaded today */
Real DlkToday; /* K-Bytes downloaded today */
Real uur1; /* Reserved */
Real uur2; /* Reserved */
Real uur3; /* Reserved */
Word Users; /* Number of active users */
Word ActiveToday; /* Minutes active today */
Word Callstoday; /* Calls today */
Word MsgPostToday; /* Public messages posted today */
Word EmailToday; /* Private messages posted today */
Word FbackToday; /* Feedback sent to SysOp today */
Word UlToday; /* Number of uploads today */
Word uuw1; /* Reserved */
Word uuw2; /* Reserved */
Word uuw3; /* Reserved */
Word MaxUsers; /* Maximum users allowed to be active */
Word ErrorsToday; /* Number of errors today */
Word NusersToday; /* Number of new users today */
Word DlToday; /* Number of downloads today */
Integer NewUserMsgTo; /* User number new user message sent to */
Integer uui1; /* Reserved */
Integer SysopMailTo; /* User number mail to "SYSOP" is sent to */
Integer GuestUser;
Integer FailedLogonMsgTo; /* Guest user number (0=None) */
Integer uuw5; /* Reserved */
Integer UsageLogDays; /* Number of days to keep USAGE.LOG */
Integer WaitMailUser; /* Mail waiting on wait screen (0=none) */
Byte UEditJumpSL; /* SL required for SysOp Control-U menu */
ArFlagType UEditJumpAR; /* AR flag required from Control-U menu */
Byte NoviceDisplay; /* Number of calls to display novice msg */
Byte NodeNumber; /* Multi-user node number */
Boolean UEditJumpPassword; /* Use System pswd for Quick User Edit */
Boolean ScanOnUploads; /* System permits forced scan on uploads */
Word MaxTimeInBank; /* Maximum minutes in time bank */
Boolean ShowGifRes; /* Show GIF resolution */
Boolean CheckUploadSpace; /* Show upload drive space */
Boolean SystemSecur; /* Full keyboard security active */
Boolean MultiUser; /* Board in multi-user mode */
Byte TBmaxDeposit; /* Maximum daily time bank deposit */
Byte TBmaxWithdraw; /* Maximum daily time bank withdraw */
Byte SysopLvl; /* SL for SysOp */
Byte CoSysopLvl; /* SL for CoSysOp */
Byte uub1; /* Reserved */
Byte AddBbsLvl; /* SL for adding boards to bbs listing */
Byte EmailLvl; /* SL for sending normal private mail */
Byte uub2; /* Reserved */
Byte uub3; /* Reserved */
Byte SeeUnvalLvl; /* DSL for seeing unvalidated files */
Byte DlCoSysopLvl; /* DSL for Download CoSysOp */
Byte NoRatioChk; /* DSL for no ratio */
Byte ReadAnon; /* SL to know see anonymous real name */
Byte ReplyAnon; /* SL to reply to anonymous private mail */
Byte PublicAnonAny; /* SL to post anonymous on any public base */
Byte PrivateAnonAny; /* SL to send private anonymous mail */
Byte MaxPublicCall; /* Maximum public posts per call */
Byte MaxPrivCall; /* Maximum private messages per call */
Byte MaxFbackCall; /* Maximum feedback to SysOp per call */
Byte uub4; /* Reserved */
Byte SeePasswords; /* SL to see user passwords remotely */
Byte uub5; /* Reserved */
Byte uub6; /* Reserved */
Byte ComPort; /* Communications port */
Byte TimeOut; /* Minutes for inactivity time-out */
Byte TimeOutBell; /* Minutes for inactivity bell */
Byte Backlogdays; /* Number of days to keep SYSOP.LOG's */
Byte PrivilegeSL; /* Privilege SL */
Byte PrivilegeDSL; /* Privilege DSL */
Byte CDmask; /* Carrier detect mask */
Byte MaxLogonTries; /* Maximum logon attempts per call */
Byte uub7; /* Reserved */
Byte uub8; /* Reserved */
Byte UlTimePercent; /* UL time percent refund */
Byte MaxChats; /* Maximum chat pages per call */
Byte uub9; /* Reserved */
Byte TagLineSL; /* SL for tag line command */
Boolean ClosedSystem; /* System closed */
Boolean TitlePause; /* Allow [PAUSE] on welcome screen */
Boolean LogonBulletin; /* Logon to the bulletin section */
Boolean BlankWait; /* Blank the wait screen if no activity */
Boolean Handles; /* Allow handles */
Boolean AutoANSIDetect; /* Logon auto-detect ANSI */
Boolean SecureSystem; /* Keyboard security active */
Boolean TimePerDay; /* Time limits represent time per day */
Boolean Mailer; /* External mailer active */
Boolean SysopFemale; /* SysOp is female */
Boolean scantosysoplog; /* File scans are saved in SysOp log */
Range TimeAllowed; /* SL array of time per call/per day */
Range UlDlNumRatio; /* DSL array of number of file UL ratios */
Range UlDlKratio; /* DSL array of K-Byte UL ratios */
Range CallsAllowed; /* SL array of calls allowed per day */
Range PostCall; /* SL array of posts per 1/10 call */
Byte uusystatrec8[8]; /* Reserved */
}
SystatRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Set of menu flags */
{
Bit SLs : 1; /* SL security check - When off DSL security check */
Bit OrCheck : 1; /* SL or AR - When off SL and AR */
Bit Flag1 : 1; /* Time/Help display (menu) -or- */
/* Hidden status (command) */
Bit Flag2 : 1; /* Board display override (menu) -or- */
/* Link to next (command) */
Bit Flag3 : 1; /* Menu name prompt (menu) -or- */
/* Unused (command) */
}
MenuFlagSet; /* 1 byte used for 8 flags in set */
typedef struct /* Menus - MENUS.LST */
{
Char LongD[61]; /* Menu description (menu) -or- */
/* Long command desc (command) */
Byte GSL; /* General security level - Depends on SLS */
ArFlagType ArLvl; /* AR flag */
MenuFlagSet Flags; /* Menu flags */
union /* Menu or command - Variant section */
{
struct /* Menu information */
{
Byte MenuNum; /* Menu number */
Char mPrompt[21]; /* Menu prompt unless "flag3" active */
Char Password[16]; /* Menu password */
Byte FallBack; /* Fallback menu number */
Char HelpFile[8]; /* Help file ID name */
Byte StartHelp; /* Starting help level 0=default */
Byte Location; /* Menu location */
/* (0=Main, 1=File, 2=ReadMessage) */
}
vMenu;
struct /* Command information */
{
Byte Pkey; /* Command PKey */
Char Pdata[21]; /* Command PData */
Char Shortd[16]; /* Command short description */
Char CmdKey[13]; /* Command execution key */
}
vCommand;
}
Menu;
}
MenuRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Macro list - MACROS.LST */
{
Integer UserN; /* User number of macro owner */
Char Key[4][161]; /* Text for each of the macros */
}
MacroRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Single protocols - SPROT.DAT */
{
Char Key[13]; /* Execution key */
Char Desc[61]; /* Description */
Word MinBaud; /* Minimum baud rate to use */
Word MaxBaud; /* Maximum baud rate to use */
Byte DSL; /* DSL required */
Char TempLog[53]; /* Temp log path and name */
Char UlLog[53]; /* UL log path and name */
Char DlLog[53]; /* DL log path and name */
Char UlString[71]; /* UL string for DOS call */
Char DlString[71]; /* DL string for DOS call */
Boolean GoodCode; /* Result codes mean good transfer */
Byte DlCode[6]; /* DL error level result codes */
Byte ULcode[6]; /* DL error level result codes */
}
SprotocolRec;
typedef struct /* Batch protocols - BPROT.DAT */
{
Char Key[13]; /* Execution key */
Char Desc[61]; /* Description */
Word MinBaud; /* Minimum baud rate to use */
Word MaxBaud; /* Maximum baud rate to use */
Byte DSL; /* DSL required */
Char UlString[71]; /* UL string for DOS call */
Char DlString[71]; /* DL string for DOS call */
Char UlList[53]; /* UL file list file path and name */
Char DlList[53]; /* DL file list file path and name */
Char TempLog[53]; /* Temp log path and name */
Char UlLog[53]; /* UL log path and name */
Char DlLog[53]; /* DL log path and name */
Byte MaxCmdLen; /* Maximum command line length */
Byte PosFn; /* Position of filename in log */
Byte PosStatus; /* Position of status in log */
Boolean GoodCode; /* Result codes mean good transfer */
Char DlCode[6][11]; /* DL status result codes */
Char ULcode[6][11]; /* UL status result codes */
}
BprotocolRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Validation information - VALIDATE.DAT */
{
Char Key; /* Execution key */
Char Desc[161]; /* Descrip sent to user after validation */
/* 76 max real length - Rest for color */
Byte SL; /* SL to set on validation */
Byte DSL; /* DSL to set on validation */
Word Credit; /* Credit in cents to set on validation */
Word Points; /* File points to set on validation */
Word TimeBank; /* Time bank minutes to set on validation */
ArFlagset Ar; /* AR flags to set on validation */
FlagSet Flags; /* Special flags to set on validation */
Word UnusedWord; /* Reserved */
}
ValidationRec;
/*---------------------------------------------------------------------------*/
typedef struct /* Event flags */
{
Bit UnknownEvent : 1; /* 1-1. Unknown */
Bit EventIsExternal : 1; /* 1-2. External/Internal */
Bit EventIsActive : 1; /* 1-3. Active/InActive */
Bit EventIsShell : 1; /* 1-4. Shell/Error */
Bit EventIsMonthly : 1; /* 1-5. Monthly/Daily */
Bit EventIsPermission : 1; /* 1-6. Permission/Restriction */
Bit EventIsChat : 1; /* 1-7. Chat Event */
Bit EventIsSoft : 1; /* 1-8. Soft/Hard */
Bit BaudIsActive : 1; /* 2-1. Baud Rate Flag */
Bit SLisActive : 1; /* 2-2. SL Flag */
Bit DSLisActive : 1; /* 2-3. DSL Flag */
Bit ARisActive : 1; /* 2-4. ARflag required */
Bit InRatioIsActive : 1; /* 2-5. InRatioFlag */
Bit TimeIsActive : 1; /* 2-6. Time Flag */
Bit SetARisActive : 1; /* 2-7. Set AR flag */
Bit ClearARisActive : 1; /* 2-8. Clear AR Flag */
Bit uuEvent24 : 1; /* Byte 3 ... */
Bit uuEvent23 : 1;
Bit uuEvent22 : 1;
Bit uuEvent21 : 1;
Bit uuEvent20 : 1;
Bit uuEvent19 : 1;
Bit uuEvent18 : 1;
Bit uuEvent17 : 1;
Bit uuEvent16 : 1; /* Byte 4 ... */
Bit uuEvent15 : 1;
Bit uuEvent14 : 1;
Bit uuEvent13 : 1;
Bit uuEvent12 : 1;
Bit uuEvent11 : 1;
Bit uuEvent10 : 1;
Bit uuEvent9 : 1;
Bit uuEvent81 : 1; /* Byte 5 ... */
Bit uuEvent7 : 1;
Bit uuEvent6 : 1;
Bit uuEvent5 : 1;
Bit uuEvent4 : 1;
Bit uuEvent3 : 1;
Bit uuEvent2 : 1;
Bit uuEvent1 : 1;
}
EventType; /* 5 bytes used for 40 flags */
typedef Byte EventDaysType; /* Set of event days */
/* (bits 0-6 = Sun..Sat) */
/*****************************************/
/* The Record Structure of the EventFile */
/*****************************************/
typedef struct /* Events - EVENTS.DAT */
{
EventType EventFlags; /* Kinds of Events Supported */
Byte EventDayOfMonth; /* If monthly, the Day of Month */
EventDaysType EventDays; /* If Daily, the Days Active */
Word EventStartTime; /* Start Time in Min from Mid. */
Word EventFinishTime; /* Finish Time */
Char EventDesc[33]; /* Description of the Event */
Char EventQualMsg[65]; /* Msg/Path if he qualifies */
Char EventNotQualMsg[65]; /* Msg/Path if he doesn't */
Byte EventPreTime; /* Min. B4 event to rest. Call */
Boolean EventOffHook; /* Take phone Offhook ? */
Char EventLastDate[9]; /* Last Date Executed */
Byte EventErrorLevel; /* For Ext Event ErrorLevel */
Char EventShellPath[9]; /* File for Ext Event Shell */
Word LoBaud; /* Low baud rate limit */
Word HiBaud; /* High baud rate limit */
Byte LoSL; /* Low SL limit */
Byte HiSL; /* High SL limit */
Byte LoDSL; /* Low DSL limit */
Byte HiDSL; /* High DSL limit */
Char ARflagRequired; /* AR flag required */
Word MaxTimeAllowed; /* Max Time per user this event */
Char SetARflag; /* AR Flag to Set */
Char ClearARflag; /* AR Flag to Clear */
Byte EventUnused[128]; /* Reserved */
}
EventRecordType;
/*---------------------------------------------------------------------------*/
#define MAXMODEMRESULTCODES 45 /* Maximum number of modem result codes */
typedef Byte modemresulttype; /* Modem result type */
#define RESULTERROR 0 /* Command error */
#define RESULTOK 1 /* Command accepted */
#define RESULTRING 2 /* Phone ringing */
#define RESULTNOCARRIER 3 /* Connect attempt failed */
#define RESULTCONNECT 4 /* Connect succcessful */
#define RESULTWAITSCREEN 5 /* Go to wait screen */
#define RESULTLOCALLOGON 6 /* Logcal logon */
#define RESULTSHELLBATCH 7 /* Shell to batch file */
#define RESULTEXITERRORLEVEL 8 /* Exit system with error level */
#define RESULTEXITSYSTEM 9 /* Exit system with error level 255 */
#define RESULTNODIALTONE 10 /* Reserved */
#define RESULTRINGING 11 /* Reserved */
#define RESULTBUSY 12 /* Reserved */
#define RESULTNOANSWER 13 /* Reserved */
#define RESULTVOICE 14 /* Reserved */
typedef struct
{
modemresulttype typeofresult; /* Type of result */
Char result[51]; /* Test of result */
Longint connectrate; /* Connect rate modem to modem */
Longint realrate; /* Real rate computer to modem */
Longint controlcode; /* Error level or startup code */
Boolean fullduplex; /* Full duplex operation? */
Boolean errorcorrecting; /* Error correcting modem? */
Byte Unused[8]; /* Reserved */
}
resultrec;
/**********************************************************/
/* Modem string mapping codes: */
/* */
/* Char. Name Action */
/* ----- --------------- ------------------------------ */
/* ^ Carat Control code of next character */
/* | Pipe, Split Bar Carriage return sent */
/* ` Accent Mark 1/20th second delay */
/* ~ Tilde 1/2 second delay */
/* ^- Carat & Minus Lower DTR line */
/* ^+ Carat & Plus Raise DTR line */
/**********************************************************/
typedef struct /* Modem record - MODEM.DAT */
{
Boolean uuunused; /* Unused */
Char modemdescription[65]; /* Description on modem */
Byte characterdelay; /* Miliseconds */
Boolean ctsrts; /* Hardware flow control active */
Boolean samering; /* Reserved */
Boolean nocollide; /* Reserved */
Byte numberresults; /* Number of modem result codes defined */
resultrec result[MAXMODEMRESULTCODES]; /* Array of results */
Char preinitialization[65]; /* Pre-initialization string */
Char initialization[65]; /* Initialization string */
Char answer[65]; /* Answer string */
Char busy[65]; /* Busy string */
Char hangupprimary[65]; /* Hangup primary string */
Char hangupsecondary[65]; /* Hangup secondard string */
Char afterhangup[65]; /* After hangup string */
Char exitsystem[65]; /* Exit system string */
Char predial[65]; /* Reserved */
Char dialprefix[65]; /* Reserved */
Char dialsuffix[65]; /* Reserved */
Longint waitbaud; /* Init modem speed */
Boolean lockedbaud; /* Is baud rate locked - Not used by T.A.G. */
Byte ecefficiency; /* Error correcting efficiency */
Byte ncefficiency; /* Normal connect efficiency */
Byte Unused[249]; /* Reserved */
}
modemrec;
/*---------------------------------------------------------------------------*/
#define MAXSUBOPS 10 /* Maximum number of message section SubOps */
typedef Byte NoYesForcedType; /* Message section type */
#define NO 0 /* Anonymous messages not allowed */
#define YES 1 /* Anonymous messages allowed */
#define FORCED 2 /* Messages forced anonymous */
#define ATUNUSED 3 /* Reserved */
/************************************/
/* Standard Attributes for Messages */
/************************************/
typedef struct
{
Bit Msg_Private : 1; /* 1 fPrivate */
/* RaPrivate */
Bit Msg_Crash : 1; /* 2 fCrash */
/* Crash */
Bit Msg_Received : 1; /* 3 fReceived */
/* Received */
Bit Msg_Sent : 1; /* 4 fSent */
/* Sent */
Bit Msg_FileAttached : 1; /* 5 fFileAttached */
/* FileAttach */
Bit Msg_KillSent : 1; /* 6 fKillSent */
/* KillSent */
Bit Msg_Local : 1; /* 7 fLocal */
/* LocalMessage */
Bit Msg_ReturnReceiptRequest : 1; /* 8 fReportReceiptRequest */
/* RequestReceipt */
Bit Msg_IsReturnReceipt : 1; /* 9 fIsReturnReceipt */
/* ReturnReceipt */
Bit Msg_AuditRequest : 1; /* 10 fAuditRequest */
/* AuditRequest */
Bit Msg_Fido_InTransit : 1; /* 11 fInTransit */
Bit Msg_Fido_Orphan : 1; /* 12 fOrphan */
Bit Msg_Fido_HoldForPickup : 1; /* 13 fHoldForPickup */
Bit Msg_Fido_Unusedbit10 : 1; /* 14 fUnusedbit10 */
Bit Msg_Fido_FileRequest : 1; /* 15 fFileRequest */
Bit Msg_Fido_FileUpdateRequest : 1; /* 16 fFileUpdateRequest */
Bit Msg_Ra_Deleted : 1; /* 17 Deleted */
Bit Msg_Ra_NetmailPendingExport : 1; /* 18 NetmailPendingExport */
Bit Msg_Ra_NetMailMessage : 1; /* 19 NetMailMessage */
Bit Msg_Ra_EchomailPendingExport : 1; /* 20 EchomailPendingExport */
Bit Msg_Ra_UnusedMsgbit7 : 1; /* 21 UnusedMsgbit7 */
Bit Msg_Ra_UnusedNetbit7 : 1; /* 22 UnusedNetbit7 */
Bit Msg_Unused_Attr1 : 1; /* 23 Reserved */
Bit Msg_Unused_Attr2 : 1; /* 24 Reserved */
Bit Msg_Unused_Attr3 : 1; /* 25 Reserved */
Bit Msg_Unused_Attr4 : 1; /* 26 Reserved */
Bit Msg_Unused_Attr5 : 1; /* 27 Reserved */
Bit Msg_Unused_Attr6 : 1; /* 28 Reserved */
Bit Msg_Unused_Attr7 : 1; /* 29 Reserved */
Bit Msg_Unused_Attr8 : 1; /* 30 Reserved */
Bit Msg_Unused_Attr9 : 1; /* 31 Reserved */
Bit Msg_Unused_Attr10 : 1; /* 32 Reserved */
}
MessageAttrFlagSet; /* 4 bytes used for 32 flags */
typedef Byte MBstyle; /* Message section style flags */
#define UUMBBSTYLE 0 /* Was For Private Mail Board */
#define LOCALSTYLE 1 /* Local Board */
#define ECHOSTYLE 2 /* Echomail, Needs Origin */
#define NETMAILSTYLE 3 /* Netmail board (Only one I hope!) */
#define GROUPSTYLE 4 /* For Groupmail Support */
typedef Byte MBtype; /* Message section type flags */
#define UUMBTYPE 0 /* Was For Netmail Board */
#define FIDOFORMAT 1 /* Fido 1.Msg Format */
#define RAFORMAT 2 /* Remote Access Format */
typedef struct /* Message boards - MBOARDS.DAT */
{
Char Name[65]; /* Name of the Board */
MBstyle Mstyle; /* Local/Echo/Netmail */
MBtype Mtype; /* Message Board Type */
Byte RaBoard; /* Board Number if RA/QBBS type */
Char Path[65]; /* Directory PathName */
Char OriginLine[66]; /* Origin Line */
ArFlagType AccessAR; /* AR flag Required to Access */
ArFlagType PostAR; /* AR flag required to Post */
Byte AccessSL; /* Security Level Required to Access */
Byte PostSL; /* Security Level Required to Post */
Word MsgCount; /* Count of Msgs on the Board */
Word MaxMsgs; /* Max Number of Messages */
Word uuMaxOld; /* Max Days for Messages */
Char Password[17]; /* Password Required */
NoYesForcedType Anon; /* Anonymous Type */
Boolean AllowAnsi; /* Should we allow ANSI */
NoYesForcedType AllowHandle; /* Should we allow handles */
/*********************************************************/
/* Message Board SubOpts List - Up to 10 - User Numbers */
/*********************************************************/
Integer SubOps[MAXSUBOPS+1]; /* SubOps - Item 0 = How many */
Char EchoTag[33]; /* Echo Tag for Writing ECHOMAIL.BBS */
Boolean UseOtherAddress; /* Use something other than system */
Byte OldOtherAddress[23]; /* Unused */
Byte MenuNumber; /* Default read message number */
/* (if 0, use system default) */
Char PrePostFile[9]; /* Prepost file name */
Byte MinMsgs; /* Minimum number of messages */
Char QuoteStart[71]; /* Override starting quote */
Char QuoteEnd[71]; /* Override ending quote */
Byte OldDefaultAtt[2]; /* Unused */
Byte GroupNumber; /* What group the board belongs */
AddressType OtherAddress; /* The Address to use! */
NoYesForcedType RestrictPrivate; /* Private mail status */
MessageAttrFlagSet DefaultAttr; /* Default message flags */
Byte Reserved[12]; /* Reserved */
}
MboardType;
/*---------------------------------------------------------------------------*/
typedef Char LastOnType[8][161]; /* Last Few Callers - LASTON.DAT */
/*---------------------------------------------------------------------------*/
#define MAXBITS 1024 /* Means a 128 byte bit set, bits 0 to 1023 */
typedef Byte bitSetType[MAXBITS / 8]; /* Board Flags - ?ZSCAN.DAT */
/*---------------------------------------------------------------------------*/
typedef struct /* Who's online - $WHO.DAT */
{
Boolean Active;
Byte Node; /* Node number for this rec */
Boolean Available; /* Is he available for anything */
Char Uname[37]; /* Users Name */
Char CityState[31]; /* City and State */
Longint Baud; /* Baud Rate */
Byte Paging; /* Paging Node Number */
Byte InPrivateChat; /* Node in private chat with */
Boolean InGroupChat; /* Is he in Group Chat */
Char Desc[65]; /* Long Description */
}
WhoRecType;
/*---------------------------------------------------------------------------*/
typedef struct /* USERON.BBS file version 1.00 */
{
Char Name[36]; /* User name */
Byte Line; /* Node number */
Word Baud; /* Connect rate */
Char City[26]; /* City/State */
Boolean DoNotDisturb; /* Do not disturb */
Byte Status; /* Status */
}
UserOnType100;
/*---------------------------------------------------------------------------*/
typedef struct /* USERON.BBS file version 1.1x */
{
Char Name[36]; /* Real name */
Char Handle[36]; /* User name */
Byte Line; /* Node number */
Word Baud; /* Connect rate */
Char City[26]; /* City/State */
Boolean DoNotDisturb; /* Do not disturb */
Byte Status; /* Status */
Byte Attribute; /* Attribute */
}
UserOnType11x;
/*---------------------------------------------------------------------------*/
#endif